5afb4f1a75564c5857d78ccca4670e1cc437ee7b,src/main/java/meka/core/Metrics.java,Metrics,P_RecallMacro,#number#number#,542
Before Change
int L = Y[0].length;
double m = 0.0;
for (int j = 0; j < L; j++) {
m += (P_Recall(M.getCol(Y,j),M.getCol(Ypred,j)) * 1./L);
}
return m;
After Change
double m = 0.0;
for (int j = 0; j < L; j++) {
int[] y_j = M.getCol(Y, j);
int[] p_j = M.getCol(Ypred, j);
if (allMissing(y_j)) {
continue;
}
int[][] aligned = align(y_j, p_j);
int[] y_jAligned = aligned[0];
int[] p_jAligned = aligned[1];
double curRecall = recall(y_jAligned, p_jAligned) * 1. / y_jAligned.length;
if (Double.isNaN(curRecall)) {
continue;
}
m += curRecall;
}